This invention relates to firmware for a processor-based system, and, more particularly, to a mechanism for assuring proper execution of the firmware.
A processor-based system typically includes firmware for initializing the system. Firmware refers to both code that is permanently or semi-permanently resident in the processor-based system and the hardware device used to store the code. As used herein, xe2x80x9cfirmwarexe2x80x9d refers to the code while xe2x80x9cfirmware devicexe2x80x9d refers to the hardware device. Usually, the code is xe2x80x9cburnedxe2x80x9d into a read-only memory (ROM) or a flash memory device. The ROM or flash devices may be removable integrated circuits (ICs) that plug into a dedicated chip slot in the system board.
Although the firmware device may be removable and, thus, physically replaced, more typically, the firmware device is re-programmed in place, e.g., without physical removal. ROMs may be programmable (PROMs), erasable (EPROMs), and electrically erasable (EEPROMs), such as flash memory. Flash memory may typically be programmed at a faster rate than other EEPROMs.
Like other software, the firmware itself is a valuable component of the processor-based system. Firmware is the very first code executed in the system. The firmware initializes the key hardware components. Once the system is initialized, the firmware typically loads an operating system loader program into memory. The loader program then loads the operating system.
The firmware comprises part of the identity of the processor-based system. Many computer manufacturers, for example, include a proprietary firmware that includes features and capabilities that may distinguish the processor-based system from those of other manufacturers.
Because flash memory is typically expensive relative to other circuitry, the flash memory may be shared. In addition to the firmware program, other programs or even non-executable data, may be stored in the flash memory.
Further, in some processor-based systems, programs such as the firmware program may be executed from more than one address in the flash memory. The availability of more than one execution address, as well as the co-mingling of executable and non-executable data in the flash memory may impair security of and even operation of the processor-based system.
Thus, there is a continuing need to assure execution of a firmware program when powering on a processor-based system.